热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

也就是|事情_阿里华为和微软等多家国内外厂商组团搞OpenJDK,Oracle为啥不参加?

篇首语:本文由编程笔记#小编为大家整理,主要介绍了阿里华为和微软等多家国内外厂商组团搞OpenJDK,Oracle为啥不参加?相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了阿里华为和微软等多家国内外厂商组团搞OpenJDK,Oracle为啥不参加?相关的知识,希望对你有一定的参考价值。


Hollis的新书限时折扣中,一本深入讲解Java基础的干货笔记!


阿里、华为和微软等多家国内外厂商组团搞OpenJDK,还问Oracle为啥不参加?


近日,Eclipse 基金会和 Adoptium 工作组宣布搞了一件大事情,这件事情应该是Oracle不喜欢的,就是推出了一个叫做Adoptium Marketplace的项目,简单翻译就是Adoptium 市场!


这是干嘛的?市场嘛,肯定是展示或者销售一些东西,而这个Adoptium Marketplace则是给大家提供经过严格测试的符合标准的高质量Java二进制文件,简单点,就是给你提供JDK和JRE供你下载,全部都是基于OpenJDK!


目前Adoptium Marketplace已正式开放,可以下载了:



不过我发现这个Adoptium Marketplace目前只提供JDK的长期支持版本下载,也就是如下三个LTS版本:



那说到这里,有些人肯定不太明白,有点云里雾里,那必须给你普及一些知识了!


LTS


首先就是Java的LTS的版本,目前主要有如下这几个:


  1. Java SE 8(LTS)

  2. Java SE 11(LTS)

  3. Java SE 17(LTS)


那这个是啥意思呢?这还不简单,这是Java的长期支持版本,没错,LTS代表长期支持版本,目前Java中已经发布的Java8,11和17是长期支持版本,那么,你可知道长期支持版本的发布周期呢?


我们来看,目前三个出现的长期支持版本的发布时间:


  1. Java 8 是2014年发布

  2. Java 11是2018年发布

  3. Java 17是2021年发布


那么你说Java长期支持版本的发布周期是多少呢?四年还是三年?我告诉你吧,是三年,何以证明,我们可以从官方网站上找到说明:看图



以上描述出现在oracle官网中的“oracle Java SE支持路线图”中,也就是这里:


地址是:https://www.oracle.com/java/technologies/java-se-support-roadmap.html


ok,那么现在我们了解到Java的长期支持版本是每三年发布一次,但是下一个长期版本21将在2023年9月发布,有消息称长期支持版本将改为两年一次,我就想说,这个Oracle办事……


OpenJDK和Oracle JDK


首先,你要知道,我们平常说的JDK,大多数指的是Oracle JDK,也可以说,Oracle JDK是最正宗的JDK,这意思就是说还有其他的JDK!


我们知道,Java源于Sun公司,但是后来经营不善,被收购了,看一张图:



也就是说在1998年到2006年之间吗,这是属于Sun公司的时代,在2006年的时候,Sun公司选择开源JDK的源代码,当然去除了一些闭源特性,这就是现在我们常说的OpenJDK(是不是感觉自己大限将至,赶紧开源出去?)


那在2009年的时候,Sun公司就被Oracle给收购了,此时这个Java就是Oracle说的算了!


Sun被oracle收购之后,在2011年发布了Java7,这一年,Oracle承诺回到以前每两年发布一次的发布周期。但是,就要到了2013年的时候,oracle却宣布Java延期发布,说是有漏洞,在修复,于是最终Java8是在2014年发布的。


也就是Java7到Java8是隔了三年,那到了发布Java9的时候也是隔了三年,是在2017年发布的,这是不是意味着oracle不再遵循sun之前的每两年发布一次,而是三年发布一次呢?


事情有了转机,在2017年Java9发布之后,Java平台的主架构师 Mark Reinhold 发出提议,要求将Java的功能更新周期从之前的每两年一个新版本缩减到每六个月一个新版本。该提议获得了通过,并在提出后不久生效。


于是从Java9开始就是每6个月发布一次新版本了,但是此前oracle想要每三年发布一次版本的念头还没有打消,于是乎,你猜的没错,就是LTS版本的发布周期……


2006年Sun公司开源出去的Java源码形成了至关重要的社区组织,也就是OpenJDK,在Oracle收购Sun公司之后,这个OpenJDK也被Oracle接管了!


两者区别


我们一般说的JDK自从sun被oracle收购之后,指的就是oracle JDK了,那这个与OpenJDK有啥区别呢?


Java Development Kit(JDK)是sun公司搞出来的,在2006年sun公司决定将其开源,但是在JDK中的源码有一部分是商业源码,就是JDK中的源码不全是sun公司的,那这块代码sun公司是无权将其开源的,这些代码被称为闭源的一些特性,但是sun还是讲这部分闭源特性给去掉将JDK源码开源了。


但是由于开源后的代码少了一些闭源特性,也就是少了一些商业代码所提供的功能怎么办呢?采取的办法则是找寻具有相同功能的开源代码做了替代,于是就成就了OpenJDK。


后来oracle不是收购了sun嘛,这个OpenJDK自然也就属于oracle的了,于是oracle在OpenJDK的基础之上,又增加了一些额外的功能特性,于是就成就了oracle JDK,也就是我们今天普遍说的JDK,实际上oracle JDK和OpenJDK没啥重大的技术差别,只不过oracle JDK针对性的增加了一些功能,但是OpenJDK是包含sun公司之前创造的JDK的全部核心功能的,而且由于oracle的这一操作,oracle JDK就成了商业版本,在生产环境使用,最好是要规避一些风险的,而OpenJDK则是免费试用,源码开放!


那说到这里,你知道oracle JDK(简称JDK)和OpenJDK之间的差别了吗?


OpenJDK只包含JDK中最核心的功能,JDK中的一些非核心功能OpenJDK是不包含的,比如oracle自行添加的一些商用功能以及额外特性。


可以说,OpenJDK是JDK的极简版本,另外还有一个重要知识点:


我们一般说的JDK指的就是oracle的JDK,每次JDK的新版本发布,都是把OpenJDK中的更新拿过来加上自己的私有部分,也就形成了最终的新版本JDK。


JDK的不同厂商


通过上述描述,我们知道OpenJDK就是包含大部分原有JDK的核心,而现在说的JDK指的是oracle在OpenJDK之上加上私有特性形成的oracle JDK,因为现在OpenJDK是被oracle主导的,那么oracle JDK也就享有特权直接叫JDK。


可是不管怎么说,OpenJDK是开源的,不仅你oracle可以拿过来加上私有特性形成你的oracle JDK,其他厂商也可以这么做,比如有如下这些:


  1. AdoptOpenJDK:算是半官方,这个是由OpenJDK社群维护的

  2. Amazon(亚马逊) Corretto JDK

  3. 阿里 Dragonwell JDK

  4. 腾讯 Kona JDK

  5. 华为毕昇 JDK


等等……其本质就是拿OpenJDK加上私有特性构建而成!


但是,你一定要记住的一个就是,Oracle Java现在是商用的,它搞出来的要收费的,要钱的!


Adoptium


那Adoptium又是啥?通过上面的介绍,我们知道了JDK是有不同的厂商的,都是在OpenJDK的基础上构建而来,这其中有一个比较特殊,就是AdoptOpenJDK,因为它算是半个官方,为啥?


因为AdoptOpenJDK是直接由OpenJDK社群维护的,也就是说,你们都根据我OpenJDK去进行新特性增加改造搞新的出来,我自己不也可以搞,岂不是更加方便,于是就有了AdoptOpenJDK!


而这个AdoptOpenJDK在2020年的时候就以Adoptium这个名字转移到了Eclipse Foundation项目中去,你就可以理解成Adoptium以前叫做AdoptOpenJDK!


现在的Adoptium是一个工作组,主要成员包括阿里云、华为、IBM、iJUG、 Karakun AG、微软、New Relic和Red Hat于 2021 年 3 月发起。


Adoptium Marketplace


这次的Adoptium Marketplace就是由eclipse基金会牵头联合Adoptium工作组发起的一个项目,目的就是大家伙团结起来,一起贡献力量,去构建更好的OpenJDK!


正如Eclipse 基金会执行董事 Mike Milinkovich 所说“在 Java 生态系统中,第一次有一群供应商团结在一起,不仅是一个兼容性标准,而且是一个质量标准,这是一个重要的里程碑,对于行业来说,这是一个机会,可以在高质量的 OpenJDK 运行时的样子方面立足。


此前,给个厂商在OpenJDK基础之上构建属于自己的独特的JDK,都有他们自己的一个名称,比如OpenJDK官方的叫做AdoptOpenJDK,阿里的叫做Dragonwell JDK,华为就是毕昇 JDK,而这次大家共同成立的这个Adoptium Marketplace发行的JDK也有自己的名称,叫做“Eclipse Temurin”简称就是“Temurin”了!


我们从Adoptium Marketplace的官方网站也可以看到:



Oracle拒绝加入


那对于这样的一个项目,大家最容易想到的就是Oracle了,毕竟人家算得上是正主,所以此项目一定会邀请Oracle的加入,但是结果呢?


Oracle选择拒绝加入,你们知道为啥吗?评论区可以聊一聊!


参考链接:


1.https://www.infoworld.com/article/3662048/eclipse-opens-java-binaries-marketplace.html


2.https://adtmag.com/articles/2022/05/26/eclipse-adoptium-marketplace-launches.aspx


3.https://adoptium.net/marketplace/



我的新书《深入理解Java核心技术》已经上市了,上市后一直蝉联京东畅销榜中,目前正在6折优惠中,想要入手的朋友千万不要错过哦~长按二维码即可购买~



长按扫码享受6折优惠



往期推荐





IDEA 官宣全新默认 UI,太震撼了!!








几行代码,搞定 SpringBoot 接口恶意刷新和暴力请求!








消息队列原理和选型:Kafka、RocketMQ 、RabbitMQ 和 ActiveMQ





有道无术,术可成;有术无道,止于术


欢迎大家关注Java之道公众号



好文章,我在看❤️


推荐阅读
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 基于事件驱动的并发编程及其消息通信机制的同步与异步、阻塞与非阻塞、IO模型的分类
    本文介绍了基于事件驱动的并发编程中的消息通信机制,包括同步和异步的概念及其区别,阻塞和非阻塞的状态,以及IO模型的分类。同步阻塞IO、同步非阻塞IO、异步阻塞IO和异步非阻塞IO等不同的IO模型被详细解释。这些概念和模型对于理解并发编程中的消息通信和IO操作具有重要意义。 ... [详细]
  • 如何实现JDK版本的切换功能,解决开发环境冲突问题
    本文介绍了在开发过程中遇到JDK版本冲突的情况,以及如何通过修改环境变量实现JDK版本的切换功能,解决开发环境冲突的问题。通过合理的切换环境,可以更好地进行项目开发。同时,提醒读者注意不仅限于1.7和1.8版本的转换,还要适应不同项目和个人开发习惯的需求。 ... [详细]
  • Jmeter对RabbitMQ压力测试
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Jmeter对RabbitMQ压力测试相关的知识,希望对你有一定的参考价值。Jm ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
  • 2021最新总结网易/腾讯/CVTE/字节面经分享(附答案解析)
    本文分享作者在2021年面试网易、腾讯、CVTE和字节等大型互联网企业的经历和问题,包括稳定性设计、数据库优化、分布式锁的设计等内容。同时提供了大厂最新面试真题笔记,并附带答案解析。 ... [详细]
  • Jboss的EJB部署描述符standardjaws.xml配置步骤详解
    本文详细介绍了Jboss的EJB部署描述符standardjaws.xml的配置步骤,包括映射CMP实体EJB、数据源连接池的获取以及数据库配置等内容。 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • 初探PLC 的ST 语言转换成C++ 的方法
    自动控制软件绕不开ST(StructureText)语言。它是IEC61131-3标准中唯一的一个高级语言。目前,大多数PLC产品支持ST ... [详细]
  • 浅析对象 VO、DTO、DO、PO 概念
    作者|CatQi链接|cnblogs.comqixuejiap4390086.html前言由于此订阅号换了个皮肤,导致用户接受文章不及时。读者可以打开订阅号「Web项 ... [详细]
author-avatar
林韵杰64833
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有